package com.ym.medical.domain.entity;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ym.common.constant.BaseEntity;
import com.ym.base.enums.FlagEnum;
import com.ym.medical.enums.CodeRuleTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import tk.mybatis.mapper.annotation.LogicDelete;

import javax.persistence.Table;
import java.util.Date;

/**
 * 编码生产对象 sys_code_rule
 *
 * @author ym
 * @date 2020-08-17
 */
@ApiModel("编码生产-实体")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "sys_code_rule")
public class SysCodeRuleEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 规则名称
     */
    @ApiModelProperty("规则名称")
    private String ruleName;

    /**
     * 规则编码
     */
    @ApiModelProperty("规则编码")
    private String ruleCode;

    /**
     * 编码前缀
     */
    @ApiModelProperty("编码前缀")
    private String codePrefix;

    /**
     * 序列长度
     */
    @ApiModelProperty("序列长度")
    private Integer serialLength;

    /**
     * 索引值
     */
    @ApiModelProperty("索引值")
    private Long serial;

    /**
     * 日期格式化
     */
    @ApiModelProperty("日期格式化")
    private String curFormatVal;

    /**
     * 日期格式化格式,如yyyyMM
     */
    @ApiModelProperty("日期格式化格式,如yyyyMM")
    private String format;

    /**
     * 格式类型,1日期+序列。2日期+时间戳+随机数
     */
    @ApiModelProperty("格式类型,1日期+序列。2日期+时间戳+随机数")
    @JsonSerialize(converter = CodeRuleTypeEnum.Covert.class)
    private String formatType;

    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    private Long creater;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createtime;

    /**
     * 删除标志
     */
    @ApiModelProperty("删除标志")
    @JsonSerialize(converter = FlagEnum.Covert.class)
    @LogicDelete
    private String deleted;

}
